1. Field of the Invention
This invention relates generally to memory modules and, more particularly, to a structure and method for arranging and interconnecting memory devices on a buffered memory module.
2. State of the Art
Computer systems use memory devices such as dynamic random access memory (DRAM) devices to store instructions and data for access and processing by a system processor. Such memory devices are conventionally used as system memory where a processor communicates with the system memory through a processor bus and a memory controller. In such an architecture, the processor issues a memory request in the form of a memory command, such as a read or write command, and an address designating the location from or to which the data is to be read or written. Accordingly, the memory controller uses the command and address to generate appropriate row and column addresses to the system memory. In response thereto, the data is transferred between the system memory and the processor.
While the operating speed of memory devices has continuously increased, the speed of memory devices has not kept pace with the speed of the information-requesting processors. Accordingly, the relatively slow speed of memory devices limits the data bandwidth between the processor and the memory devices. Additionally, the performance of computer systems is also limited by latency associated with reading data from memory devices in a computer system. Specifically, when a memory device read command is sent to a system memory device, such as a synchronous DRAM (SDRAM) device, the data as read from the memory device is output only after a delay of several clock cycles. While SDRAM memory devices may output data at a high-data rate in a burst mode, for example, the delay in initially providing the data can significantly slow the operating speed of the computer system.
One method for alleviating the memory latency problem is to utilize multiple memory devices coupled to the processor through a memory hub. In a memory hub architecture, a system or memory controller is coupled to multiple memory modules, each of which includes a controller such as a memory hub coupled to one or more memory devices. A computer system configured in a memory hub architecture more efficiently routes memory requests and responses between the controller and the memory devices resulting in a higher bandwidth since a processor can access a first memory device while a second memory device is responding to a prior memory access request.
FIG. 1 illustrates a conventional memory system 100 configured in accordance to a memory hub architecture. As illustrated, a host 102 is coupled to a plurality of memory modules 104, which are illustrated as being connected in a “daisy chain” connection architecture. In such an architecture, the plurality of memory modules 104 is serially connected by a module bus 110. Accordingly, signals or commands from the host 102 or memory controller are transferred in order to each adjacent memory module of the plurality of memory modules 104.
Each of the plurality of memory modules 104 is illustrated as including a hub 106 and a plurality of memory devices collectively illustrated as memory devices 108. The plurality of memory modules 104 may be configured as single in-line memory modules (SIMMs) or dual in-line memory modules (DIMMs). Those of ordinary skill in the art appreciate that SIMMs have memory devices on one side of the memory module whereas DIMMs have memory devices on both sides of the memory module. Furthermore, DIMMs may be further configured as registered DIMMs (R-DIMMs) or fully buffered DIMMs (FB-DIMMs).
In an R-DIMM, signals except data signals are transferred from a memory controller to the memory devices by way of one or more registers. In an FB-DIMM, all signals from a memory controller are passed to the memory devices through a hub or advanced memory buffer (AMB), which is typically disposed on one side of the memory module. The hub or AMB is responsible for communicating with the edge connector and generating and receiving all signals to and from the memory devices. An AMB is also responsible for generating the correct timing of signals to and from the memory devices and, by way of example, AMBs are designed as generic devices that may operate at data rates from around 3.2 Gb/s to 4.8 Gb/s and support a plurality of memory devices.
On a memory module, memory devices may be partitioned or grouped into sets of memory devices commonly known as ranks. A single rank memory module includes a set of memory devices on a module generally comprising eight bytes or sixty-four bits of data and/or one byte or eight bits of error correction coding bits. All memory devices in a single rank are simultaneously selected or activated by a single chip select (CS) signal. Generally, SIMMs are single-rank modules.
Similarly, double-sided DIMMs are generally dual or two-rank memory modules. Dual-rank memory modules are configured such that each rank is connected by a single chip select (CS) signal. Generally, DIMMs are configured to include a single rank of memory devices on each side of the memory module. Furthermore, each rank comprises the quantity of memory devices with sufficient DQ signals to correspond with the bus width of the hub on the memory module. Accordingly, since a conventional bus width is generally sixty-four bits plus eight bits of error correction coding, sixteen separate memory devices or eighteen separate memory devices when error correction coding is included are required to form a single rank when each memory device includes a four bit data or DQ signal width, also known as a “by-four” memory device.
Accordingly, for a two or dual-rank DIMM, thirty-two memory devices or thirty-six memory devices when error correction coding is utilized are needed to populate a DIMM when “by-four” memory devices are utilized. Since DIMMs are utilized in a myriad of computer systems and their dimensions are regulated or standardized, the placement of such a vast number of memory devices on a memory module substrate becomes a significant design challenge. Accordingly, there is a need to provide an architecture, which enables an effective placement and interconnection of a large number of memory devices on a memory module.